#ifndef _INTERACAOMOUSE
#define _INTERACAOMOUSE

#include <stdio.h>

#ifndef _TPONTO
#define _TPONTO

typedef struct tPonto_ {
	float x, y;	
} tPonto;

#endif

class InteracaoMouse 
{
private:
	tPonto posicaoAtual;
	float rotacaoCalculada;
	bool botaoPressionado;
	tPonto posicaoClique;
	//tPonto posicaoDesclique;

public:
	InteracaoMouse();
	void move(float posX, float posY);
	void clicouBotao();
	void soltouBotao();
	float getRotacaoZ();
	float getPosX();
	float getPosY();

};

InteracaoMouse::InteracaoMouse()
{
	posicaoAtual.x = posicaoAtual.y = 0.0f;
	rotacaoCalculada = 0.0f;
	botaoPressionado = false;
}

void InteracaoMouse::move(float posX, float posY)
{
	if (botaoPressionado)
	{
		rotacaoCalculada = sqrt((posX-posicaoAtual.x)*(posX-posicaoAtual.x) + (posY-posicaoAtual.y)*(posY-posicaoAtual.y));
		if (posX > posicaoAtual.x)
			rotacaoCalculada = -rotacaoCalculada;
	}
	posicaoAtual.x = posX;
	posicaoAtual.y = posY;
}

void InteracaoMouse::clicouBotao()
{
	botaoPressionado = true;
	posicaoClique.x = posicaoAtual.x;
	posicaoClique.y = posicaoAtual.y;
}

void InteracaoMouse::soltouBotao()
{
	botaoPressionado = false;
	rotacaoCalculada = 0.0f;
}

float InteracaoMouse::getRotacaoZ()
{
	return rotacaoCalculada;
}

float InteracaoMouse::getPosX()
{
	return posicaoAtual.x;
}

float InteracaoMouse::getPosY()
{
	return posicaoAtual.y;
}

#endif